home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / CRYPTO.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  8.1 KB  |  195 lines

  1. 1  CLS : KEY OFF : SCREEN 0 : WIDTH 80
  2. 2  CLEAR ,15000
  3. 3  DEF SEG = 0 : BUFFER = &HEA60
  4. 4  GOTO 1090
  5. 100  PRINT "************************************************************"
  6. 110  PRINT "**                       CODE-MASTER                      **"
  7. 120  PRINT "**                                                        **"
  8. 130  PRINT "**                                                        **"
  9. 140  PRINT "**  VERSION 1.1 (64K)                    AUGUST 29, 1982  **"
  10. 150  PRINT "**                                                        **"
  11. 160  PRINT "**  ALLOWS YOU TO CREATE, ENCODE AND DECODE MESSAGES      **"
  12. 170  PRINT "**  USING THE DISKETTE OR CASSETTE                        **"
  13. 180  PRINT "**  (DEFAULTS TO CURRENT DEVICE)                          **"
  14. 190  PRINT "************************************************************"
  15. 200  LOCATE 12,1
  16. 210  PRINT "ENTER YOUR SELECTION -
  17. 220  PRINT
  18. 230  PRINT "1. = CLEAR TEXT BUFFER
  19. 240  PRINT "2. = ENTER OR UPDATE TEXT FOR ENCRYPTION
  20. 250  PRINT "3. = ENCODE MESSAGE
  21. 260  PRINT "4. = DECODE MESSAGE AND PRINT IT
  22. 270  PRINT "5. = SAVE ENCODED MESSAGE TO DISKETTE OR CASSETTE
  23. 280  PRINT "6. = LOAD ENCODED MESSAGE FROM DISKETTE OR CASSETTE
  24. 290  LOCATE 12,30 : INPUT A
  25. 300  IF (A>6) OR (A<1) THEN CLS : GOTO 100
  26. 310  ON A GOTO 1000,2000,3000,4000,5000,6000
  27. 1000  CLS
  28. 1010  PRINT "************************************************************"
  29. 1020  PRINT "**              CLEAR TEXT BUFFER                         **"
  30. 1030  PRINT "**  THE BUFFER FOR THE PLAIN TEXT MESSAGE IS (23 X 80) -1 **"
  31. 1040  PRINT "**  CHARACTERS IN LENGTH. AND STARTS AT 60000 DECIMAL     **"
  32. 1050  PRINT "**  IT WILL TAKE ABOUT 10 SEC TO CLEAR BUFFER TO ALL      **"
  33. 1060  PRINT "**  SPACES.                                               **"
  34. 1070  PRINT "************************************************************"
  35. 1080  LOCATE 10,1
  36. 1090  PRINT "PLEASE STAND BY FOR APPROX 10 SEC -
  37. 1100  FOR X = BUFFER TO BUFFER + &H72F
  38. 1110  POKE X,32
  39. 1120  NEXT
  40. 1130  LOCATE 25,1 : PRINT "PRESS ANY KEY TO CONTINUE - ";:INPUT A$
  41. 1140  CLS : GOTO 100
  42. 2000  CLS
  43. 2010  PRINT "************************************************************"
  44. 2020  PRINT "**         ENTER OR UPDATE TEXT FOR ENCRYPTION            **"
  45. 2030  PRINT "**                                                        **"
  46. 2040  PRINT "**  THE PRESENT MESSAGE BUFFER WILL BE DISPLAYED,  AND    **"
  47. 2050  PRINT "**  THE CURSOR WILL BE RETURNED TO HOME.                  **"
  48. 2060  PRINT "**  ENTER YOUR TEXT USING -                               **"
  49. 2070  PRINT "**  THE 4 CURSOR CONTROL KEYS - UP, DOWN, LEFT, RIGHT     **"
  50. 2080  PRINT "**  THE ENTIRE ASCII CHARACTER SET -                      **"
  51. 2090  PRINT "**  THE BACKSPACE KEY AND THE ENTER KEY                   **"
  52. 2100  PRINT "**                                                        **"
  53. 2110  PRINT "**  FINALLY, WHEN YOU ARE FINISHED ENTERING THE TEXT -    **"
  54. 2120  PRINT "**  PRESS  ALT E  (FOR EXIT) TO RETURN TO THE MENU        **"
  55. 2130  PRINT "**                                                        **"
  56. 2140  PRINT "************************************************************"
  57. 2150  '
  58. 2160  LOCATE 25,1 : PRINT "PRESS ENTER TO CONTINUE - " ;
  59. 2170  A$ = INKEY$ : IF A$ = "" THEN 2170 ELSE CLS : LOCATE ,,1
  60. 2180  FOR X = BUFFER TO BUFFER + &H72F
  61. 2190  PRINT CHR$(PEEK(X));
  62. 2200  NEXT
  63. 2210  LOCATE 25,1 : PRINT "USE   ALT E   TO EXIT  " : LOCATE 1,1,1
  64. 2220  A$ = INKEY$ : IF A$ = "" THEN 2220
  65. 2230  IF CSRLIN > 23 THEN LOCATE 23,POS(0)
  66. 2240  IF LEN(A$) = 2 THEN 2290
  67. 2250  IF (ASC(A$) = 8) AND (POS(0) > 1) THEN LOCATE CSRLIN,POS(0)-1 : PRINT " ";      :LOCATE CSRLIN,POS(0)-1 : POKE BUFFER+(CSRLIN-1)*80+POS(0)-1,32:GOTO 2220
  68. 2260  IF (ASC(A$) = 13) AND (CSRLIN <23) THEN LOCATE CSRLIN+1,1 : GOTO 2220
  69. 2270  IF (ASC(A$) = 13) AND (CSRLIN = 23) THEN LOCATE 23,1 :GOTO 2220
  70. 2280  POKE BUFFER + (CSRLIN-1)*80 + POS(0)-1,ASC(A$) : PRINT A$; : GOTO 2220
  71. 2290  B$ = MID$(A$,2,1) : B = ASC(B$)
  72. 2300  IF B = 71 THEN LOCATE 1,1
  73. 2310  IF (B = 72) AND (CSRLIN > 1) THEN LOCATE CSRLIN-1,POS(0)
  74. 2320  IF (B = 75) AND (POS(0) > 1) THEN LOCATE CSRLIN,POS(0)-1
  75. 2330  IF (B = 77) AND (POS(0) < 80) THEN LOCATE CSRLIN,POS(0)+1
  76. 2340  IF (B = 80) AND (CSRLIN < 23) THEN LOCATE CSRLIN+1,POS(0)
  77. 2350  IF (B = 18) THEN CLS : GOTO 100
  78. 2360  GOTO 2220
  79. 3000  CLS
  80. 3010  PRINT "************************************************************"
  81. 3020  PRINT "**            ENCODE THE PLAIN TEXT MESSAGE               **"
  82. 3030  PRINT "**                                                        **"
  83. 3040  PRINT "**  ENTER KEY #1 TO INITIALIZE THE RANDOM GENERATOR       **"
  84. 3050  PRINT "**  ENTER KEY #2 TO STEP YOU PART WAY INTO THE CODE       **"
  85. 3060  PRINT "**                                                        **"
  86. 3070  PRINT "**  THE PROGRAM WILL TAKE THE PLAIN TEXT IN MEMORY AT     **"
  87. 3080  PRINT "**  60000 TO 61839 AND ENCRYPT IT, PLACING IT IN MEMORY   **"
  88. 3090  PRINT "**  AT 62000 TO 63839.                                    **"
  89. 3100  PRINT "**                                                        **"
  90. 3110  PRINT "**  FINALLY, THE PROGRAM WILL DISPLAY THE ENCRYPTED       **"
  91. 3120  PRINT "**  TEXT                                                  **"
  92. 3130  PRINT "**                                                        **"
  93. 3140  PRINT "************************************************************"
  94. 3150  '
  95. 3160  LOCATE 17,1 : CLEAR ,15000 : DEF SEG = 0 : BUFFER = &HEA60
  96. 3170  PRINT "ENTER KEY #1 (FROM -32000 TO 32000) ";:INPUT A
  97. 3180  IF (A<-32000) OR (A>32000) THEN CLS : GOTO 3000
  98. 3190  RANDOMIZE A
  99. 3200  LOCATE 19,1
  100. 3210  PRINT "ENTER KEY #2 (FROM 1 TO 1000) ";: INPUT A
  101. 3220  IF (A<1) OR (A>1000) THEN LOCATE 19,30 : PRINT "         ":GOTO 3200
  102. 3230  FOR X = 1 TO A
  103. 3240  B = RND
  104. 3250  NEXT
  105. 3260  '
  106. 3270  LOCATE 25,1 : PRINT "READY TO ENCODE - PRESS ENTER TO BEGIN ";:INPUT A$
  107. 3280  CLS : PRINT "PLEASE STAND BY - ENCODING REQUIRES APPROX 30 SEC - "
  108. 3290  FOR X = BUFFER TO BUFFER + &H72F
  109. 3300  CYPHER = INT(RND * 255)
  110. 3310  CODEDTEXT = CYPHER + PEEK(X)
  111. 3320  IF CODEDTEXT > 255 THEN CODEDTEXT = CODEDTEXT - 256
  112. 3330  POKE X+&H7D0,CODEDTEXT
  113. 3340  NEXT
  114. 3350  LOCATE 25,1 : PRINT "CODING COMPLETE - PRESS ENTER TO VIEW ";: INPUT A$
  115. 3360  CLS
  116. 3370  FOR X = BUFFER + &H7D0 TO BUFFER + &HEFF
  117. 3380  PRINT CHR$(PEEK(X));
  118. 3390  NEXT
  119. 3400  LOCATE 25,1 : PRINT "PRESS ENTER TO RETURN TO MENU - ";: INPUT A$
  120. 3410  CLS : GOTO 100
  121. 4000  CLS
  122. 4010  PRINT "************************************************************"
  123. 4020  PRINT "**            DECODE THE ENCRYPTED MESSAGE                **"
  124. 4030  PRINT "**                                                        **"
  125. 4040  PRINT "**  ENTER KEY #1 TO INITIALIZE THE RANDOM GENERATOR       **"
  126. 4050  PRINT "**  ENTER KEY #2 TO STEP YOU PART WAY INTO THE CODE       **"
  127. 4060  PRINT "**                                                        **"
  128. 4070  PRINT "**  THE PROGRAM WILL TAKE THE ENCRYPTED TEXT IN MEMORY AT **"
  129. 4080  PRINT "**  62000 TO 63839 AND DECODE IT, PLACING IT IN MEMORY    **"
  130. 4090  PRINT "**  AT 60000 TO 61839.                                    **"
  131. 4100  PRINT "**                                                        **"
  132. 4110  PRINT "**  FINALLY, THE PROGRAM WILL DISPLAY THE DECODED         **"
  133. 4120  PRINT "**  TEXT                                                  **"
  134. 4130  PRINT "**                                                        **"
  135. 4140  PRINT "************************************************************"
  136. 4150  '
  137. 4160  LOCATE 17,1 : CLEAR ,15000 : DEF SEG = 0 : BUFFER = &HEA60
  138. 4170  PRINT "ENTER KEY #1 (FROM -32000 TO 32000) ";:INPUT A
  139. 4180  IF (A<-32000) OR (A>32000) THEN CLS : GOTO 4000
  140. 4190  RANDOMIZE A
  141. 4200  LOCATE 19,1
  142. 4210  PRINT "ENTER KEY #2 (FROM 1 TO 1000) ";: INPUT A
  143. 4220  IF (A<1) OR (A>1000) THEN LOCATE 19,30 : PRINT "         ":GOTO 3200
  144. 4230  FOR X = 1 TO A
  145. 4240  B = RND
  146. 4250  NEXT
  147. 4260  '
  148. 4270  LOCATE 25,1 : PRINT "READY TO DECODE - PRESS ENTER TO BEGIN ";:INPUT A$
  149. 4280  CLS : PRINT "PLEASE STAND BY - DECODING REQUIRES APPROX 30 SEC - "
  150. 4290  FOR X = BUFFER TO BUFFER + &H72F
  151. 4300  CYPHER = INT(RND * 255)
  152. 4310  CODEDTEXT = PEEK(X+2000) - CYPHER
  153. 4320  IF CODEDTEXT < 0 THEN CODEDTEXT = CODEDTEXT + 256
  154. 4330  POKE X,CODEDTEXT
  155. 4340  NEXT
  156. 4350  LOCATE 25,1 : PRINT "DECODING COMPLETE - PRESS ENTER TO VIEW ";: INPUT A$
  157. 4360  CLS
  158. 4370  FOR X = BUFFER TO BUFFER + &H72F
  159. 4380  PRINT CHR$(PEEK(X));
  160. 4390  NEXT
  161. 4400  LOCATE 25,1 : PRINT "PRESS ENTER TO RETURN TO MENU - ";: INPUT A$
  162. 4410  CLS : GOTO 100
  163. 5000  CLS
  164. 5010  PRINT "************************************************************"
  165. 5020  PRINT "**  SAVE ENCODED MESSAGE TO DISKETTE OR CASSETTE          **"
  166. 5030  PRINT "************************************************************"
  167. 5040  '
  168. 5050  LOCATE 5,1
  169. 5060  INPUT "ENTER THE FILENAME TO SAVE TO - (8 CHAR MAX) ";A$
  170. 5070  LOCATE 10,1
  171. 5080  PRINT "WARNING - MAKE SURE THE CASSETTE IS IN RECORD OR DISKETTE INSERTED
  172. 5090  PRINT "THEN, PRESS ENTER -
  173. 5100  INPUT B$
  174. 5110  LOCATE 15,1
  175. 5120  PRINT "SAVING - ";A$
  176. 5130  BSAVE A$,(BUFFER + &H7D0),&H730
  177. 5140  LOCATE 25,1 : PRINT "SAVE COMPLETE - PRESS ENTER TO RETURN TO MENU ";
  178. 5150  A$ = INKEY$ : IF A$ = "" THEN 5150 ELSE CLS : GOTO 100
  179. 6000  CLS
  180. 6010  PRINT "************************************************************"
  181. 6020  PRINT "**  LOAD ENCODED MESSAGE FROM DISKETTE OR CASSETTE        **"
  182. 6030  PRINT "************************************************************"
  183. 6040  '
  184. 6050  LOCATE 5,1
  185. 6060  INPUT "ENTER THE FILENAME TO READ FROM - (8 CHAR MAX) ";A$
  186. 6070  LOCATE 10,1
  187. 6080  PRINT "WARNING - MAKE SURE THE CASSETTE IS IN PLAY OR DISK INSERTED
  188. 6090  PRINT "THEN, PRESS ENTER -
  189. 6100  INPUT B$
  190. 6110  LOCATE 15,1
  191. 6120  PRINT "LOADING - ";A$
  192. 6130  BLOAD A$
  193. 6140  LOCATE 25,1 : PRINT "LOAD COMPLETE - PRESS ENTER TO RETURN TO MENU ";
  194. 6150  A$ = INKEY$ : IF A$ = "" THEN 5150 ELSE CLS : GOTO 100
  195.